/*
 * mcp9801.h
 *
 *  Created on: Oct 13, 2013
 *      Author: IEUser
 */

#ifndef MCP9801_H_
#define MCP9801_H_

/******************************************************************************************
 *	Deklaracje dołączanych plików nagłówkowych i bibliotek								 *
 *****************************************************************************************/
#include <avr/io.h>

#include "twi.h"

/******************************************************************************************
 *	Makrodefinicje															 			 *
 *****************************************************************************************/
#define MCP9801							0x90
	#define TEMPERATURE					0x00
	#define CONFIGURATION				0x01
		#define ONE_SHOT				0x80
			#define ONE_SHOT_ON			(ONE_SHOT & 0x80)
			#define ONE_SHOT_OFF		(ONE_SHOT & 0x00)
		#define RESOLUTION				0x60
			#define RESOLUTION_9BIT		(RESOLUTION & 0x00)
			#define RESOLUTION_10BIT	(RESOLUTION & 0x20)
			#define RESOLUTION_11BIT	(RESOLUTION & 0x40)
			#define RESOLUTION_12BIT	(RESOLUTION & 0x60)
		#define FAULT_BIT				0x20
		#define ALERT_POLARITY			0x10
		#define COMP_INT_MODE			0x08
		#define SHUTDOWN				0x80
	#define HYSTERESIS					0x02
	#define LIMIT_SET					0x03
/******************************************************************************************
 *	Deklaracje zmiennych pomocniczych i globalnych										 *
 *****************************************************************************************/

/******************************************************************************************
 *	Deklaracje funkcji								 									 *
 *****************************************************************************************/
void mcp9801_write(uint8_t address, uint8_t data);
uint8_t mcp9801_read(uint8_t address, uint8_t ack);
void mcp9801_write_register(uint8_t address, uint8_t data);
void mcp9801_read_temp(uint8_t *temp_int, uint8_t *temp_fract);

#endif /* MCP9801_H_ */
